package com.sparrow.support;

public interface Privilege {
	String getMenuJson(String userId);

	/**
	 * 判断用户的系统角色对当前资源或策略是否有操作权限
	 * 
	 * @param userIdOrGroupLevel
	 *            当前访问的用户 id 或forumGroupLevel用户组级别
	 * 
	 *            userIdOrGroupLevel以GROUP-FRM开头说明是FROUMR GROUP 否则为后台管理
	 * 
	 *            后台管理则为userId 否则为groupLevel
	 * 
	 *            例如 user a 有组
	 * 
	 *            system group 1(R1,R2)
	 * 
	 *            forum gorup 1(R2,R3) 并集为(R1,R2,R3)
	 * 
	 *            求 user a,R3 结果为true
	 * 
	 *            导致forum group的权限错误地赋给system group 所以要做是否后台操作的判断
	 * @param resourcePolicy
	 *            需要判断的url或policy
	 * @param value
	 *            资源的fourmCode或policy的值
	 * @return
	 * @throws Exception
	 */
	boolean isAccessable(String userIdOrGroupLevel, String resourcePolicy,
			String value);

	void setPrivilege(String selectedPolicy, String selectedResource,
			String groupId) throws Exception;

	String getPrivilegeJsonByGroupId(String groupId) throws Exception;
}
